package com.zenithmind.user.service.domain;

import com.zenithmind.user.pojo.domain.User;

/**
 * 用户领域服务接口
 * 遵循接口隔离原则：只包含用户核心业务逻辑
 * 遵循依赖倒置原则：高层模块依赖抽象而非具体实现
 */
public interface UserDomainService {
    
    /**
     * 验证用户名是否唯一
     */
    boolean isUsernameUnique(String username, String excludeUserId);
    
    /**
     * 验证邮箱是否唯一
     */
    boolean isEmailUnique(String email, String excludeUserId);
    
    /**
     * 创建新用户
     */
    User createUser(String username, String password, String email);
    
    /**
     * 验证用户密码
     */
    boolean validatePassword(User user, String password);
    
    /**
     * 更新用户密码
     */
    void updatePassword(User user, String newPassword);
    
    /**
     * 记录用户登录
     */
    void recordLogin(User user, String ipAddress);
    
    /**
     * 检查用户是否可以登录
     */
    boolean canLogin(User user);
    
    /**
     * 更新用户存储使用量
     */
    boolean updateUserStorage(User user, long deltaSize);
}
